package com.swt.utils;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

/**
 * @author admin
 * @Classname MybatisUtils
 * @Version 1.0.0
 * @Date 2022/8/29 11:13
 */
//SqlSessionFactory --> SqlSession 工厂模式前者构建后者
public class MybatisUtils {
    protected static SqlSessionFactory sqlSessionFactory;

    static {
        try {
            //使用Mybaits 第一步：获取sqlSessionFactory对象 这步骤属于加载资源
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

    }
    //既然有了 sqlSessionFactory 顾名思义， 我们就可以从中获得SqlSession 的 实例
    //SqlSession 完全包含了面向数据库执行了SQL 所需的所有方法 第二部创建能执行sql的对象


    public static SqlSession getSqlSession() {
        //将openSession 设置为true就不需要手动sqlSession.close();
        return sqlSessionFactory.openSession(true);

    }
}
